package com.example.myproject;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	//private EditText input;
	
	/********************** 숫자 버튼 *************************/
	
	private Button buttonNum0;
	private Button buttonNum1;
	private Button buttonNum2;
	private Button buttonNum3;
	private Button buttonNum4;
	private Button buttonNum5;
	private Button buttonNum6;
	private Button buttonNum7;
	private Button buttonNum8;
	private Button buttonNum9;

	/********************** 특수 버튼 *************************/
	
	private Button buttonSpDivine;		// 나누기
	private Button buttonSpDot;			// 소수점
	private Button buttonSpEquals;		// 등호
	private Button buttonSpMinus;		// 빼기
	private Button buttonSpMulti;		// 곱하기
	private Button buttonSpPlus;		// 더하기
	private Button buttonBackSpace;		// 뒤로
	
	private EditText numView;			// 숫자 표시 하는 곳
	private List<String> list = new ArrayList<String>();
	private String str   = "";
	private String check = "";
	private String[] array = new String[2];
	
	private double num = 0;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ButtonClickHandler handler = new ButtonClickHandler();
		
		buttonNum0 = (Button)findViewById(R.id.buttonNum0);
		buttonNum1 = (Button)findViewById(R.id.buttonNum1);
		buttonNum2 = (Button)findViewById(R.id.buttonNum2);
		buttonNum3 = (Button)findViewById(R.id.buttonNum3);
		buttonNum4 = (Button)findViewById(R.id.buttonNum4);
		buttonNum5 = (Button)findViewById(R.id.buttonNum5);
		buttonNum6 = (Button)findViewById(R.id.buttonNum6);
		buttonNum7 = (Button)findViewById(R.id.buttonNum7);
		buttonNum8 = (Button)findViewById(R.id.buttonNum8);
		buttonNum9 = (Button)findViewById(R.id.buttonNum9);
		
		buttonSpDivine = (Button)findViewById(R.id.buttonSpDivine);
		buttonSpDot = (Button)findViewById(R.id.buttonSpDot);
		buttonSpEquals = (Button)findViewById(R.id.buttonSpEquals);
		buttonSpMinus = (Button)findViewById(R.id.buttonSpMinus);
		buttonSpMulti = (Button)findViewById(R.id.buttonSpMulti);
		buttonSpPlus = (Button)findViewById(R.id.buttonSpPlus);
		buttonBackSpace = (Button)findViewById(R.id.buttonBackSpace);
		
		numView = (EditText)findViewById(R.id.numView);
		
		/**********************  이벤트 발생 **********************/
		buttonNum0.setOnClickListener(handler);
		buttonNum1.setOnClickListener(handler);
		buttonNum2.setOnClickListener(handler);
		buttonNum3.setOnClickListener(handler);
		buttonNum4.setOnClickListener(handler);
		buttonNum5.setOnClickListener(handler);
		buttonNum6.setOnClickListener(handler);
		buttonNum7.setOnClickListener(handler);
		buttonNum8.setOnClickListener(handler);
		buttonNum9.setOnClickListener(handler);
		
		buttonSpDivine.setOnClickListener(handler);
		buttonSpDot.setOnClickListener(handler);
		buttonSpEquals.setOnClickListener(handler);
		buttonSpMinus.setOnClickListener(handler);
		buttonSpMulti.setOnClickListener(handler);
		buttonSpPlus.setOnClickListener(handler);
		buttonBackSpace.setOnClickListener(handler);
		
	}
	
	//2. 내부 클래스 이벤트 처리 클래스
	class ButtonClickHandler implements View.OnClickListener{

		@Override
		public void onClick(View v) {
			
			Button btn = (Button)v;
			int numViewLen = numView.getText().length();
			
			//클레어 키 눌렀을 때
			if(btn.getId() == R.id.buttonBackSpace){
				numView.setText("");
				/*//1개 이상 있을 때
				if(numViewLen != 0){
					numView.getText().delete(numViewLen-1, numViewLen);
				//0개 일 때
				}else{
					//numView.setText("");
				}*/
			}else{
				//아무것도 입력 되지 않았을 때
				if(numView.getText().length() == 0){
					//.을 클릭하면 0. 으로 보여줌
					if(btn.getId() == R.id.buttonSpDot){
						numView.setText("0" + buttonNum0.getText());
					//%, x, +는 표시 하지않음	
					}else if(btn.getId() == R.id.buttonSpDivine || btn.getId() == R.id.buttonSpMulti || btn.getId() == R.id.buttonSpPlus || btn.getId() == R.id.buttonSpEquals){
						numView.setText("");
					//그 외 전부 표시	
					}else{
						numView.setText(btn.getText());
					}
				//1개라도 입력되었을 때
				}else{
					numView.append(btn.getText());
					
					//check = numView.getText().toString().substring(numView.getText().length() -1, 1);
					str   = numView.getText().toString();
					
					System.out.println("str = " + str);
					//System.out.println("check = " + check);
					
					//if(!( check.equals("%") || check.equals("x") || check.equals("+") || check.equals("=") )){
						//numView.append(btn.getText());
					//}
				
					//계산 명령이 떨어지면 (=)
					if(numView.getText().toString().indexOf("=") > -1){
						str = str.replace("=", "");
						
						if(numView.getText().toString().indexOf("%") > -1){
							array = str.split("\\%");
							num = Integer.valueOf(array[0]) / Integer.valueOf(array[1]);
						}else if(numView.getText().toString().indexOf("x") > -1){
							array = str.split("\\x");
							num = Integer.valueOf(array[0]) * Integer.valueOf(array[1]);
						}else if(numView.getText().toString().indexOf("-") > -1){
							array = str.split("\\-");
							num = Integer.valueOf(array[0]) - Integer.valueOf(array[1]);
						}else if(numView.getText().toString().indexOf("+") > -1){
							array = str.split("\\+");
							//array = str.split(Pattern.quote("+"));
							num = Integer.valueOf(array[0]) + Integer.valueOf(array[1]);
						}
						
						str = String.valueOf(num);
						
						numView.append(str);
					}
				}
			}
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
